///////////////////////////////////////////////////////////
//  IGameWindowObserver.h
//  Implementation of the Interface IGameWindowObserver
//  Created on:      11-Jan-2015 4:13:27 PM
//  Original author: Eng. Ahmed Yasser
///////////////////////////////////////////////////////////

#if !defined(EA_CBB48C74_1911_4095_BAEA_E4A82CD3275E__INCLUDED_)
#define EA_CBB48C74_1911_4095_BAEA_E4A82CD3275E__INCLUDED_

#include "IGameWindow.h"

namespace EngineGame
{
	namespace EngineCore
	{
		/**
		 * The observer of all game window events
		 * @author Eng. Ahmed Yasser
		 * @version 1.0
		 * @updated 12-Jan-2015 12:01:55 PM
		 */
		class IGameWindowObserver
		{

		public:
			IGameWindowObserver() {

			}

			virtual ~IGameWindowObserver() {

			}

			IGameWindowObserver(const IGameWindowObserver& theIGameWindowObserver) {

			}

			/**
			 * Event occured when the window closed
			 * 
			 * @param gameWindow
			 */
			virtual void onWindowClosed(IGameWindow* gameWindow) =0;
			/**
			 * Events occured when  the window created
			 * 
			 * @param gameWindow    The game window that called this event
			 */
			virtual void onWindowCreated(IGameWindow* gameWindow) =0;
			/**
			 * Event occured when the window destroyed
			 * 
			 * @param gameWindow
			 */
			virtual void onWindowDestroyed(IGameWindow* gameWindow) =0;
			/**
			 * Event occured when the window resized
			 * 
			 * @param gameWindow
			 * @param width    The new width of the window
			 * @param height    The new height of the window
			 */
			virtual void onWindowResized(IGameWindow* gameWindow, int width, int height) =0;

		};

	}

}
#endif // !defined(EA_CBB48C74_1911_4095_BAEA_E4A82CD3275E__INCLUDED_)
